Skip to main content

CMIS compatibility and technical reference

Overview

Bizagi ECM integration feature consists of storing documents and files uploaded in Bizagi directly into your corporate document repository, as described in ECM integration.

This integration relies on the CMIS 1.0 standard (Content Management Interoperability Services), which consists of a generic set of Web services that expose the capabilities of the ECM. It empowers a service-oriented architecture designed to handle metadata, provide check-in and check-out options, and manage other relevant capabilities typically provided by such systems (also often referred to as DMS).

CMIS Compatibility in Bizagi

Bizagi complies with the CMIS version 1.0 standard. Web services supported and invoked by Bizagi are those that follow the SOAP standard protocol.

Typically, the set of Web services provided by ECM systems complying with the CMIS version 1.0 are:

  • RepositoryService: A web service providing getRepositories, getRepositoryInfo, getTypeChildren, getTypeDescendants, and getTypeDefinition methods useful to discover information about the repository, including object-type (metadata) details.
  • NavigationService: A web service providing getDescendants, getChildren, getFolderParent, getObjectParents, and getCheckedoutDocs methods useful for traversing the folder hierarchy and locating checked-out documents.
  • ObjectService: A web service providing basic CRUD (Create, Retrieve, Update, Delete) operations on objects in a repository, through ID-based methods such as createDocument, getObject, getProperties, updateProperties, or deleteObject.
  • VersioningService: A web service providing checkOut, cancelCheckOut, getPropertiesOfLatestVersion, getAllVersions, and deleteAllVersions methods useful for navigating or updating a "Document Version Series".
  • DiscoveryService: A web service providing search capabilities to search for query-able objects within the repository through the query method.
  • RelationshipService: A web service providing a way to retrieve dependent objects associated with an independent object through the getObjectRelationships method.
  • MultiFilingService: A web service providing addObjectToFolder and removeObjectFromFolder methods, supported only if the repository supports "multifiling" or "unfiling" optional capabilities.
  • PolicyService: A web service providing applyPolicy, removePolicy, and getAppliedPolicies methods useful for managing policies (of a "controllablePolicy object").
  • ACLService: A web service providing getACL and applyACL methods useful for managing ACL definitions.

For more information about the CMIS standard and its services specification, refer to the CMIS specification.


Note:
Before moving on with the ECM integration, it is recommended that you ensure your ECM system complies with the CMIS standard. Note that you may rely on CMIS clients and procedures to verify this (e.g, using external validators such as http://cmissync.org/CmisCompat/). In case that your ECM does not comply to CMIS, you may always choose to implement a customized integration by means of your own code through the Connectors feature (recommended) or through Widgets.

CMIS Methods Invocation

This section provides a detailed technical reference regarding which CMIS methods are invoked in Bizagi, and at what moment.

When uploading a document in Bizagi for the first time (initial storage at the ECM), the createDocument method is invoked at the On Exit of that task, and no further options are presented at that point.

When working with documents already stored in the ECM, end users in Bizagi will be able to use Lock/Unlock, Edit, Delete, or Update options.

picture

The below table lists which CMIS methods are invoked, depending on the UI actions end users choose.

Option in BizagiCMIS Method InvokedWhen Does This Happen?
EditUpdateProperties is invoked, provided that metadata was edited.At On Exit of that task (upon clicking Next in Bizagi's form).
LockCheckOutis invoked.Instantly, upon clicking the Lock option.
Unlock (after Lock)CancelCheckOut is invoked.Instantly, upon clicking the Unlock option.
UpdateCheckIn is invoked.At On Exit of that task (upon clicking Next in Bizagi's form).
Edit + Update / Update + EditCheckIn is invoked. The CheckIn invocation allows sending properties which have changed as well.At On Exit of that task (upon clicking Next in Bizagi's form).
DeleteDeleteObjectAt On Exit of that task (upon clicking Next in Bizagi's form).

Important Notes

1. Bizagi will guarantee that a document will not be left out as locked

This way, once an end user finishes working on an activity which integrates with your ECM, that document in the ECM will be left as unlocked so that others can work on it as well.

This implies that If a Lock option is used, but no Unlocking or Update is done afterward (no changes are actually made to the document), then at the On Exit of that task, Bizagi will invoke a CheckIn with no changes (if your ECM system supports the PWCUpdatable capability).

In case that your ECM system does not support this property, then a CancelCheckOut will be invoked by Bizagi (On Exit as well).

2. Other CMIS Methods Are Invoked as Well

To handle versions, metadata and document information accordingly, note that Bizagi will invoke other CMIS methods as well, such as: getAllVersions, getProperties and getTypeDefinition.

Keep in mind that the table and information above, lists the relevant methods invoked but it does not includes all of those inherent and bound to the appropriate exchange and management of information.

3. Data types belonging to the spec are supported

Bizagi supports all data types as explicitly referenced by the CMIS specification, when managing metadata of an integrated library.

Note that each ECM system may too have its own special data types, which are not part of the standard and possibly uncommon for any type of system. Those data types which belong to the spec and which are supported are:

  • String (xsd:string)
  • Boolean (xsd:boolean)
  • Decimal
  • Integer (xsd:integer)
  • Datetime (xsd:dateTime)
  • URI (xsd:anyURI)